﻿using SD.Infrastructure.DTOBase;
using SD.OpcProxy.ValueObjects.Enums;
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace SD.OpcProxy.IAppService.DTOs.Outputs
{
    /// <summary>
    /// 变量数据传输对象
    /// </summary>
    /// <remarks>勿忘[DataMember]</remarks>
    [DataContract(Namespace = "http://SD.OpcProxy.IAppService.DTOs.Outputs")]
    public class VariableInfo : BaseDTO
    {
        #region 变量类型 —— VariableType VariableType
        /// <summary>
        /// 变量类型
        /// </summary>
        [DataMember]
        public VariableType VariableType { get; set; }
        #endregion

        #region 是否只读 —— bool IsReadonly
        /// <summary>
        /// 是否只读
        /// </summary>
        [DataMember]
        public bool IsReadonly { get; set; }
        #endregion

        #region 数据类型 —— string DataType
        /// <summary>
        /// 数据类型
        /// </summary>
        [DataMember]
        public string DataType { get; set; }
        #endregion

        #region OPC服务器Id —— Guid OpcServerId
        /// <summary>
        /// OPC服务器Id
        /// </summary>
        [DataMember]
        public Guid OpcServerId { get; set; }
        #endregion

        #region 单位 —— string Unit
        /// <summary>
        /// 单位
        /// </summary>
        [DataMember]
        public string Unit { get; set; }
        #endregion

        #region 是否记录历史 —— bool KeepRecord
        /// <summary>
        /// 是否记录历史
        /// </summary>
        [DataMember]
        public bool KeepRecord { get; set; }
        #endregion

        #region 描述 —— string Description
        /// <summary>
        /// 描述
        /// </summary>
        [DataMember]
        public string Description { get; set; }
        #endregion

        #region 值描述字典 —— IDictionary<string, string> ValueDescriptions
        /// <summary>
        /// 值描述字典
        /// </summary>
        /// <remarks>键：变量值，值：变量值描述</remarks>
        [DataMember]
        public IDictionary<string, string> ValueDescriptions { get; set; }
        #endregion


        //导航属性

        #region 导航属性 - OPC服务器 —— OpcServerInfo OpcServerInfo
        /// <summary>
        /// 导航属性 - OPC服务器
        /// </summary>
        [DataMember]
        public OpcServerInfo OpcServerInfo { get; set; }
        #endregion
    }
}
